# -----------------------------------------------------------------------------
# Copyright (c) 2025, Southeast University (China)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#  - Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  - Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#  - Neither the name of the copyright holders nor the names of its
#    contributors may be used to endorse or promote products derived from
#    this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Jiajie Xu, Yanfang Zhang, Jiaqi Gao, Leyun Tian
# -----------------------------------------------------------------------------


########## [Step 1] Design setup ########
source ../xtop_scripts/design_setup.tcl

########## [Step 2] MCMM setting ########
source ../xtop_scripts/mcmm.tcl

########## [Step 3] Read timing data ####
read_timing_data -data_dir ../pt_timing_data/${top_design}
save_workspace

########## [Step 4] Check librarys ####
check_inst_reference_library
check_inst_timing_library
#check_library_completeness

########## [Step 5] Timing ECO ##########
# Fix setup violations only
source ../xtop_scripts/setup_fix.tcl

# Fix hold violations only
#source timing_scripts/hold_fix.tcl

# Fix transition violations only
#source timing_scripts/transition_fix.tcl

# Fix transition, setup, hold violations in one round.
#source timing_scripts/trans_setup_hold_fix.tcl

# Fix capacitance violations only
#source timing_scripts/capacitance_fix.tcl

# Optimize leakage power only
#source timing_scripts/leakage_power_opt.tcl

# Optimize design area only
#source timing_scripts/area_opt.tcl

# Fix SI violations only
#source timing_scripts/si_fix.tcl

# Fix fanout violations only
#source timing_scripts/fanout_fix.tcl

# Fix wire length violations only
#source timing_scripts/wire_length_fix.tcl


# Interactive ECO
#start_gui

exit

